#pragma once

namespace Nilesoft
{
	namespace Shell
	{
		const std::tuple<uint32_t, int> MSG_FLAGS[] =
		{
			{ IDENT_MSG_ERROR, MB_ICONERROR},
			{ IDENT_MSG_QUESTION, MB_ICONQUESTION},
			{ IDENT_MSG_WARNING, MB_ICONWARNING},
			{ IDENT_MSG_INFO, MB_ICONINFORMATION},
			{ IDENT_MSG_OK, MB_OK},
			{ IDENT_MSG_OKCANCEL, MB_OKCANCEL},
			{ IDENT_MSG_YESNOCANCEL, MB_YESNOCANCEL},
			{ IDENT_MSG_YESNO, MB_YESNO},
			{ IDENT_MSG_IDCANCEL, IDCANCEL},
			{ IDENT_MSG_IDOK, IDOK},
			{ IDENT_MSG_IDYES, IDYES},
			{ IDENT_MSG_IDNO, IDNO},
			{ IDENT_MSG_RIGHT, IDNO},
			{ IDENT_MSG_RTLREADING, MB_RTLREADING},
			{ IDENT_MSG_SETFOREGROUND, MB_SETFOREGROUND},
			{ IDENT_MSG_TOPMOST, MB_TOPMOST},
			{ IDENT_MSG_APPLMODAL, MB_APPLMODAL},
			{ IDENT_MSG_TASKMODAL, MB_TASKMODAL},
			{ IDENT_MSG_DEFBUTTON1, MB_DEFBUTTON1},
			{ IDENT_MSG_DEFBUTTON2, MB_DEFBUTTON2},
			{ IDENT_MSG_DEFBUTTON3, MB_DEFBUTTON3}
		};

		const std::tuple<uint32_t, COLORREF> ColorTable[] =
		{
			{IDENT_COLOR_DEFAULT, IDENT_COLOR_DEFAULT},
			{IDENT_COLOR_ACCENT, IDENT_COLOR_ACCENT},
			{IDENT_COLOR_ACCENT_LIGHT1, IDENT_COLOR_ACCENT_LIGHT1},
			{IDENT_COLOR_ACCENT_LIGHT2, IDENT_COLOR_ACCENT_LIGHT2},
			{IDENT_COLOR_ACCENT_LIGHT3, IDENT_COLOR_ACCENT_LIGHT3},
			{IDENT_COLOR_ACCENT_DARK1, IDENT_COLOR_ACCENT_DARK1},
			{IDENT_COLOR_ACCENT_DARK2, IDENT_COLOR_ACCENT_DARK2},
			{IDENT_COLOR_ACCENT_DARK3, IDENT_COLOR_ACCENT_DARK3},
			{IDENT_COLOR_BLACK, 0xFF000000},
			{IDENT_COLOR_WHITE, 0xFFFFFFFF},
			{IDENT_COLOR_ALICEBLUE, 0xFFF0F8FF},
			{IDENT_COLOR_ANTIQUEWHITE, 0xFFFAEBD7},
			{IDENT_COLOR_AQUA, 0xFF00FFFF},
			{IDENT_COLOR_AQUAMARINE, 0xFF7FFFD4},
			{IDENT_COLOR_AZURE, 0xFFF0FFFF},
			{IDENT_COLOR_BEIGE, 0xFFF5F5DC},
			{IDENT_COLOR_BISQUE, 0xFFFFE4C4},
			{IDENT_COLOR_BLANCHEDALMOND, 0xFFFFEBCD},
			{IDENT_COLOR_BLUE, 0xFF0000FF},
			{IDENT_COLOR_BLUEVIOLET, 0xFF8A2BE2},
			{IDENT_COLOR_BROWN, 0xFFA52A2A},
			{IDENT_COLOR_BURLYWOOD, 0xFFDEB887},
			{IDENT_COLOR_CADETBLUE, 0xFF5F9EA0},
			{IDENT_COLOR_CHARTREUSE, 0xFF7FFF00},
			{IDENT_COLOR_CHOCOLATE, 0xFFD2691E},
			{IDENT_COLOR_CORAL, 0xFFFF7F50},
			{IDENT_COLOR_CORNFLOWERBLUE, 0xFF6495ED},
			{IDENT_COLOR_CORNSILK, 0xFFFFF8DC},
			{IDENT_COLOR_CRIMSON, 0xFFDC143C},
			{IDENT_COLOR_CYAN, 0xFF00FFFF},
			{IDENT_COLOR_DARKBLUE, 0xFF00008B},
			{IDENT_COLOR_DARKCYAN, 0xFF008B8B},
			{IDENT_COLOR_DARKGOLDENROD, 0xFFB8860B},
			{IDENT_COLOR_DARKGRAY, 0xFFA9A9A9},
			{IDENT_COLOR_DARKGREEN, 0xFF006400},
			{IDENT_COLOR_DARKKHAKI, 0xFFBDB76B},
			{IDENT_COLOR_DARKMAGENTA, 0xFF8B008B},
			{IDENT_COLOR_DARKOLIVEGREEN, 0xFF556B2F},
			{IDENT_COLOR_DARKORANGE, 0xFFFF8C00},
			{IDENT_COLOR_DARKORCHID, 0xFF9932CC},
			{IDENT_COLOR_DARKRED, 0xFF8B0000},
			{IDENT_COLOR_DARKSALMON, 0xFFE9967A},
			{IDENT_COLOR_DARKSEAGREEN, 0xFF8FBC8F},
			{IDENT_COLOR_DARKSLATEBLUE, 0xFF483D8B},
			{IDENT_COLOR_DARKSLATEGRAY, 0xFF2F4F4F},
			{IDENT_COLOR_DARKTURQUOISE, 0xFF00CED1},
			{IDENT_COLOR_DARKVIOLET, 0xFF9400D3},
			{IDENT_COLOR_DEEPPINK, 0xFFFF1493},
			{IDENT_COLOR_DEEPSKYBLUE, 0xFF00BFFF},
			{IDENT_COLOR_DIMGRAY, 0xFF696969},
			{IDENT_COLOR_DODGERBLUE, 0xFF1E90FF},
			{IDENT_COLOR_FIREBRICK, 0xFFB22222},
			{IDENT_COLOR_FLORALWHITE, 0xFFFFFAF0},
			{IDENT_COLOR_FORESTGREEN, 0xFF228B22},
			{IDENT_COLOR_FUCHSIA, 0xFFFF00FF},
			{IDENT_COLOR_GAINSBORO, 0xFFDCDCDC},
			{IDENT_COLOR_GHOSTWHITE, 0xFFF8F8FF},
			{IDENT_COLOR_GOLD, 0xFFFFD700},
			{IDENT_COLOR_GOLDENROD, 0xFFDAA520},
			{IDENT_COLOR_GRAY, 0xFF808080},
			{IDENT_COLOR_GREEN, 0xFF008000},
			{IDENT_COLOR_GREENYELLOW, 0xFFADFF2F},
			{IDENT_COLOR_HONEYDEW, 0xFFF0FFF0},
			{IDENT_COLOR_HOTPINK, 0xFFFF69B4},
			{IDENT_COLOR_INDIANRED, 0xFFCD5C5C},
			{IDENT_COLOR_INDIGO, 0xFF4B0082},
			{IDENT_COLOR_IVORY, 0xFFFFFFF0},
			{IDENT_COLOR_KHAKI, 0xFFF0E68C},
			{IDENT_COLOR_LAVENDER, 0xFFE6E6FA},
			{IDENT_COLOR_LAVENDERBLUSH, 0xFFFFF0F5},
			{IDENT_COLOR_LAWNGREEN, 0xFF7CFC00},
			{IDENT_COLOR_LEMONCHIFFON, 0xFFFFFACD},
			{IDENT_COLOR_LIGHTBLUE, 0xFFADD8E6},
			{IDENT_COLOR_LIGHTCORAL, 0xFFF08080},
			{IDENT_COLOR_LIGHTCYAN, 0xFFE0FFFF},
			{IDENT_COLOR_LIGHTGOLDENRODYELLOW, 0xFFFAFAD2},
			{IDENT_COLOR_LIGHTGRAY, 0xFFD3D3D3},
			{IDENT_COLOR_LIGHTGREEN, 0xFF90EE90},
			{IDENT_COLOR_LIGHTPINK, 0xFFFFB6C1},
			{IDENT_COLOR_LIGHTSALMON, 0xFFFFA07A},
			{IDENT_COLOR_LIGHTSEAGREEN, 0xFF20B2AA},
			{IDENT_COLOR_LIGHTSKYBLUE, 0xFF87CEFA},
			{IDENT_COLOR_LIGHTSLATEGRAY, 0xFF778899},
			{IDENT_COLOR_LIGHTSTEELBLUE, 0xFFB0C4DE},
			{IDENT_COLOR_LIGHTYELLOW, 0xFFFFFFE0},
			{IDENT_COLOR_LIME, 0xFF00FF00},
			{IDENT_COLOR_LIMEGREEN, 0xFF32CD32},
			{IDENT_COLOR_LINEN, 0xFFFAF0E6},
			{IDENT_COLOR_MAGENTA, 0xFFFF00FF},
			{IDENT_COLOR_MAROON, 0xFF800000},
			{IDENT_COLOR_MEDIUMAQUAMARINE, 0xFF66CDAA},
			{IDENT_COLOR_MEDIUMBLUE, 0xFF0000CD},
			{IDENT_COLOR_MEDIUMORCHID, 0xFFBA55D3},
			{IDENT_COLOR_MEDIUMPURPLE, 0xFF9370DB},
			{IDENT_COLOR_MEDIUMSEAGREEN, 0xFF3CB371},
			{IDENT_COLOR_MEDIUMSLATEBLUE, 0xFF7B68EE},
			{IDENT_COLOR_MEDIUMSPRINGGREEN, 0xFF00FA9A},
			{IDENT_COLOR_MEDIUMTURQUOISE, 0xFF48D1CC},
			{IDENT_COLOR_MEDIUMVIOLETRED, 0xFFC71585},
			{IDENT_COLOR_MIDNIGHTBLUE, 0xFF191970},
			{IDENT_COLOR_MINTCREAM, 0xFFF5FFFA},
			{IDENT_COLOR_MISTYROSE, 0xFFFFE4E1},
			{IDENT_COLOR_MOCCASIN, 0xFFFFE4B5},
			{IDENT_COLOR_NAVAJOWHITE, 0xFFFFDEAD},
			{IDENT_COLOR_NAVY, 0xFF000080},
			{IDENT_COLOR_OLDLACE, 0xFFFDF5E6},
			{IDENT_COLOR_OLIVE, 0xFF808000},
			{IDENT_COLOR_OLIVEDRAB, 0xFF6B8E23},
			{IDENT_COLOR_ORANGE, 0xFFFFA500},
			{IDENT_COLOR_ORANGERED, 0xFFFF4500},
			{IDENT_COLOR_ORCHID, 0xFFDA70D6},
			{IDENT_COLOR_PALEGOLDENROD, 0xFFEEE8AA},
			{IDENT_COLOR_PALEGREEN, 0xFF98FB98},
			{IDENT_COLOR_PALETURQUOISE, 0xFFAFEEEE},
			{IDENT_COLOR_PALEVIOLETRED, 0xFFDB7093},
			{IDENT_COLOR_PAPAYAWHIP, 0xFFFFEFD5},
			{IDENT_COLOR_PEACHPUFF, 0xFFFFDAB9},
			{IDENT_COLOR_PERU, 0xFFCD853F},
			{IDENT_COLOR_PINK, 0xFFFFC0CB},
			{IDENT_COLOR_PLUM, 0xFFDDA0DD},
			{IDENT_COLOR_POWDERBLUE, 0xFFB0E0E6},
			{IDENT_COLOR_PURPLE, 0xFF800080},
			{IDENT_COLOR_RED, 0xFFFF0000},
			{IDENT_COLOR_ROSYBROWN, 0xFFBC8F8F},
			{IDENT_COLOR_ROYALBLUE, 0xFF4169E1},
			{IDENT_COLOR_SADDLEBROWN, 0xFF8B4513},
			{IDENT_COLOR_SALMON, 0xFFFA8072},
			{IDENT_COLOR_SANDYBROWN, 0xFFF4A460},
			{IDENT_COLOR_SEAGREEN, 0xFF2E8B57},
			{IDENT_COLOR_SEASHELL, 0xFFFFF5EE},
			{IDENT_COLOR_SIENNA, 0xFFA0522D},
			{IDENT_COLOR_SILVER, 0xFFC0C0C0},
			{IDENT_COLOR_SKYBLUE, 0xFF87CEEB},
			{IDENT_COLOR_SLATEBLUE, 0xFF6A5ACD},
			{IDENT_COLOR_SLATEGRAY, 0xFF708090},
			{IDENT_COLOR_SNOW, 0xFFFFFAFA},
			{IDENT_COLOR_SPRINGGREEN, 0xFF00FF7F},
			{IDENT_COLOR_STEELBLUE, 0xFF4682B4},
			{IDENT_COLOR_TAN, 0xFFD2B48C},
			{IDENT_COLOR_TEAL, 0xFF008080},
			{IDENT_COLOR_THISTLE, 0xFFD8BFD8},
			{IDENT_COLOR_TOMATO, 0xFFFF6347},
			{IDENT_COLOR_TRANSPARENT, 0x00FFFFFF},
			{IDENT_COLOR_TURQUOISE, 0xFF40E0D0},
			{IDENT_COLOR_VIOLET, 0xFFEE82EE},
			{IDENT_COLOR_WHEAT, 0xFFF5DEB3},
			{IDENT_COLOR_WHITESMOKE, 0xFFF5F5F5},
			{IDENT_COLOR_YELLOW, 0xFFFFFF00},
			{IDENT_COLOR_YELLOWGREEN, 0xFF9ACD32}
		};

		const std::tuple<uint32_t, int> KeyTable[] =
		{
			{ IDENT_KEY_NONE, 0x00},
			{ IDENT_KEY_CONTROL, VK_CONTROL},
			{ IDENT_KEY_LCONTROL, VK_LCONTROL},
			{ IDENT_KEY_RCONTROL, VK_RCONTROL},
			{ IDENT_KEY_CTRL, VK_CONTROL},
			{ IDENT_KEY_RCTRL, VK_RCONTROL},
			{ IDENT_KEY_LCTRL, VK_LCONTROL},
			{ IDENT_KEY_ALT, VK_MENU},
			{ IDENT_KEY_LALT, VK_LMENU},
			{ IDENT_KEY_RALT, VK_RMENU},
			{ IDENT_KEY_SHIFT, VK_SHIFT},
			{ IDENT_KEY_RSHIFT, VK_RSHIFT},
			{ IDENT_KEY_LSHIFT, VK_LSHIFT},
			{ IDENT_KEY_WIN, VK_LWIN | VK_RWIN},
			{ IDENT_KEY_LWIN, VK_LWIN},
			{ IDENT_KEY_RWIN, VK_RWIN},

			{ IDENT_KEY_LBUTTON, VK_LBUTTON},
			{ IDENT_KEY_RBUTTON, VK_RBUTTON},
			{ IDENT_KEY_MBUTTON, VK_MBUTTON},

			{ IDENT_KEY_ENTER, VK_RETURN},
			{ IDENT_KEY_UP, VK_UP},
			{ IDENT_KEY_DOWN, VK_DOWN},
			{ IDENT_KEY_LEFT, VK_LEFT},
			{ IDENT_KEY_RIGHT, VK_RIGHT},
			{ IDENT_KEY_BACK, VK_BACK},
			{ IDENT_KEY_CAPITAL, VK_CAPITAL},
			{ IDENT_KEY_DELETE, VK_DELETE},
			{ IDENT_KEY_END, VK_END},
			{ IDENT_KEY_F1, VK_F1},
			{ IDENT_KEY_F10, VK_F10},
			{ IDENT_KEY_F11, VK_F11},
			{ IDENT_KEY_F12, VK_F12},
			{ IDENT_KEY_F2, VK_F2},
			{ IDENT_KEY_F3, VK_F3},
			{ IDENT_KEY_F4, VK_F4},
			{ IDENT_KEY_F5, VK_F5},
			{ IDENT_KEY_F6, VK_F6},
			{ IDENT_KEY_F7, VK_F7},
			{ IDENT_KEY_F8, VK_F8},
			{ IDENT_KEY_F9, VK_F9},
			{ IDENT_KEY_HELP, VK_HELP},
			{ IDENT_KEY_HOME, VK_HOME},
			{ IDENT_KEY_INSERT, VK_INSERT},
			{ IDENT_KEY_NEXT, VK_NEXT},
			{ IDENT_KEY_PAUSE, VK_PAUSE},
			{ IDENT_KEY_PRIOR, VK_PRIOR},
			{ IDENT_KEY_APPS, VK_APPS},
			{ IDENT_KEY_CAPSLOCK, VK_CAPITAL},
			{ IDENT_KEY_CANCEL, VK_CANCEL},
			{ IDENT_KEY_EXECUTE, VK_EXECUTE},
			{ IDENT_KEY_PAGEDOWN, VK_NEXT},
			{ IDENT_KEY_PAGEUP, VK_PRIOR},
			{ IDENT_KEY_PLAY, VK_PLAY},
			{ IDENT_KEY_PRINT, VK_PRINT},
			{ IDENT_KEY_PRINTSCREEN, VK_SNAPSHOT},
			{ IDENT_KEY_SNAPSHOT, VK_SNAPSHOT},
			{ IDENT_KEY_SPACE, VK_SPACE},
			{ IDENT_KEY_TAB, VK_TAB},
			{ IDENT_KEY_ESCAPE, VK_ESCAPE}
		};
	}
}